package com.synthefact.daj.model.threaded;

import com.synthefact.daj.model.NodeIf;

/**
 * Aspects of a node unique to the threaded implementation
 */
public interface ThreadedNodeIf extends NodeIf {

    /**
     * Is the node active?
     * 
     * @return true if the node is active.
     */
    boolean isActive();

    void setActive(boolean active);

    /**
     * Will the node continue execution after being descheduled?
     * 
     * @return true if the node will the node continue execution after being
     *         descheduled.
     */
    // TODO - clean up these...
    // boolean isContinuable();

    // void setContinue(boolean continuable);

    /**
     * Is the thread to be terminated after being descheduled?
     * 
     * @return true if the thread to be terminated after being descheduled.
     */
    // boolean isTerminatable();

    // void setTerminate(boolean terminate);

    /**
     * Gets the thread for this node.
     * 
     * @return the thread for this node.
     */
    Thread getThread();
}
